/* ver: 0.1, date 19-12-2007 by Jeroen Willemsen:
 * added getElement, clear, isCleared, 
 * ver: 0.2, date 02-01-2007 by Marcel hekman
 * add clearSolveState
 */

package mazeAssignment;

/**
 *
 * @author: jeroen, jeroen, marcel en teun
 */
public interface Maze {
	public static final int SOLVE_UNVISITED = 0x00;
	public static final int SOLVE_VISITED = 0x10;
	public static final int SOLVE_INVALID = 0x20;
	public static final int SOLVE_START = 0x30;
	public static final int SOLVE_END = 0x40;
	
	
    public void clear();
    public void clearSolveState();
    public int getSizeX();
    public int getSizeY();
    
    //Functions for specific elements
    public void visit(int x, int y);
    
    public void markAsInvalid(int x, int y);
    public boolean isVisited(int x, int y);
    
    public boolean getWest(int x, int y);
    public boolean getEast(int x, int y);
    public boolean getNorth(int x, int y);
    public boolean getSouth(int x, int y);
    public void setNorth(int x, int y, boolean state);
    public void setSouth(int x, int y, boolean state);
    public void setEast(int x, int y, boolean state);
    public void setWest(int x, int y, boolean state);
    public void setSolveState(int x, int y, int sState);
    public int getSolveState(int x, int y);
    public int getBuildState(int x, int y);
}
